1. Field of the Invention
The present invention relates to data transmission in telecommunication systems, and, more particularly, to interleaving and de-interleaving blocks of data.
2. Description of the Related Art
Interleaving is a commonly employed technique in telecommunication systems. Interleaving generally comprises receiving a block of data having BLK values (i.e., BLK is the block length and BLK is an integer greater than one), and rearranging the order of the BLK values in the block. Interleaving may be employed, for example, to remove non-random sequences of values in a data stream, or may be employed to reduce effects of burst errors inserted into the block of data as the block of data passes through a transmission medium.
Such rearranging of data values may be considered a mapping f(*) as illustrated in FIG. 1. When a transmitter interleaves the data values d(0)-d(3) of a block (data values have associated address indices daddr (0) to daddr (BLKxe2x88x921) in the block), a receiver reverses the interleaving of the data values in the block by de-interleaving. However, the only information available to the receiver are the data values themselves (with block boundaries) and the address indices addr(i) of the sequence of interleaved data values in the interleaved block. For any interleaving (mapping) algorithm, a corresponding de-interleaving algorithm performs the complementary function of the interleaving algorithm, and such algorithms may be optimized to reduce delay or processing required to accomplish the mapping of the de-interleaving algorithm. Consequently, the de-interleaving algorithms of the prior art may typically employ a different algorithm than that of the interleaving algorithm.
The present invention relates to de-interleaving an interleaved block of data values. A linear sequence of values is generated, each value corresponding to a position of a data value in the de-interleaved block; and a corresponding interleaved address for each value is generated based on a mapping employed to generate the interleaved block from an original block of data values. The position of each data value in the interleaved block is associated with an interleaved address; and each data value in the interleaved block is assigned to a position in the de-interleaved block identified by the value of the linear sequence corresponding to the interleaved address of the data value in the interleaved block.